// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Bienvenue sur ViPhive Casino – Jouez aux Meilleurs Jeux de Casino en Ligne en France – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Bienvenue sur ViPhive Casino – Jouez aux Meilleurs Jeux de Casino en Ligne en France

Découvrez l’univers des casinos en ligne avec ViPhive Casino

Découvrez l’univers des casinos en ligne avec ViPhive Casino, une expérience de jeu inoubliable en France. Profitez d’une large sélection de jeux de casino en ligne, tels que la roulette, le blackjack et les machines à sous. Inscrivez-vous dès maintenant et recevez un généreux bonus de bienvenue. Jouez en toute sécurité et confidentialité grâce à notre système de cryptage avancé. Rejoignez notre communauté de joueurs en ligne et tentez votre chance de gagner gros!

Les meilleurs jeux de casino en ligne maintenant disponibles en France

Les joueurs français peuvent désormais profiter d’une large sélection de jeux de casino en ligne de premier ordre. Découvrez les machines à sous populaires telles que “Mega Moolah” et “Starburst”, ainsi que les jeux de table classiques tels que le blackjack et la roulette. Les amateurs de poker trouveront également leur bonheur avec une variété de jeux de vidéo poker. De plus, les casinos en ligne offrent souvent des bonus et des promotions attractifs pour les nouveaux joueurs. Ne manquez pas l’opportunité de jouer à certains des meilleurs jeux de casino en ligne dès maintenant en France.

Comment commencer à jouer sur ViPhive Casino : un guide pour les débutants

Comment commencer à jouer sur ViPhive Casino : un guide pour les débutants en France.
1. Inscrivez-vous sur ViPhive Casino en remplissant le formulaire d’inscription.
2. Effectuez un dépôt en choisissant une méthode de paiement sécurisée.
3. Explorez la large sélection de jeux de casino et faites votre choix.
4. Placez votre mise et commencez à jouer en suivant les règles du jeu.
5. Profitez de fonctionnalités supplémentaires telles que les bonus et les promotions.

ViPhive Casino : une expérience de jeu de casino en ligne incomparable

Vous cherchez une expérience de jeu de casino en ligne incomparable en France ? Ne cherchez pas plus loin que ViPhive Casino. Avec une large sélection de jeux de casino en ligne, des graphismes époustouflants et une plateforme facile à utiliser, ViPhive Casino offre une expérience de jeu en ligne sans pareille. De plus, avec des options de paiement sécurisées et un service clientèle disponible 24h/24 et 7j/7, vous pouvez être sûr que votre expérience de jeu sera agréable et sans tracas. Alors pourquoi attendre ? Rejoignez ViPhive Casino dès aujourd’hui et découvrez par vous-même pourquoi c’est l’un des casinos en ligne les plus populaires en France.

Les avantages de jouer sur ViPhive Casino : sécurité, commodité et divertissement

Jouez sur ViPhive Casino, un choix idéal pour les joueurs français cherchant à allier sécurité, commodité et divertissement. Profitez d’une expérience de jeu en ligne sécurisée, grâce à des protocoles de cryptage de pointe et une politique de jeu responsable. Accédez à une large sélection de jeux, y compris les dernières machines à sous, jeux de table et jeux en direct, depuis le confort de votre foyer. Réalisez des dépôts et des retraits facilement grâce à une variété d’options de paiement, y compris les cartes de crédit, les portefeuilles électroniques et les virements bancaires. Découvrez un service clientèle de qualité supérieure, disponible 24h/24 et 7j/7 pour répondre à toutes vos questions et préoccupations. Rejoignez dès maintenant la communauté ViPhive Casino et profitez d’une expérience de jeu en ligne inoubliable.

ViPhive Casino : la destination de choix pour les amateurs de jeux de hasard en ligne en France

Si vous êtes à la recherche d’une expérience de casino en ligne passionnante en France, ne cherchez pas plus loin que ViPhive Casino. Avec une large sélection de jeux de hasard, y compris les machines à sous, la roulette, le blackjack et le poker, ViPhive Casino est sûr de satisfaire tous les goûts. De plus, avec des bonus et des promotions généreux, ViPhive Casino offre aux joueurs la possibilité de gagner gros. Le casino est également disponible en français, ce qui en fait vip hive une destination de choix pour les amateurs de jeux de hasard en France. En outre, ViPhive Casino est entièrement agréé et réglementé, ce qui garantit que les joueurs peuvent profiter d’une expérience de jeu sûre et équitable. Inscrivez-vous dès aujourd’hui et découvrez pourquoi ViPhive Casino est la destination de choix pour les amateurs de jeux de hasard en ligne en France.

Bienvenue sur ViPhive Casino – Jouez aux Meilleurs Jeux de Casino en Ligne en France
Je m’appelle Jacques, j’ai 45 ans et je suis un grand fan de jeux de casino en ligne. J’ai récemment découvert ViPhive Casino et je dois dire que c’est l’un des meilleurs sites de casino en ligne sur lesquels j’ai jamais joué. Le choix de jeux est incroyable, des machines à sous aux jeux de table en passant par le vidéo poker, il y en a pour tous les goûts. De plus, les graphismes et les effets sonores sont de première qualité, ce qui rend l’expérience de jeu encore plus agréable.
En ce qui concerne les paiements, ViPhive Casino offre une grande variété d’options de dépôt et de retrait, ce qui est très pratique. J’ai également été impressionné par le niveau de sécurité et de confidentialité offert par le site.
Globalement, je recommande vivement ViPhive Casino à tous ceux qui cherchent un site de casino en ligne fiable et divertissant. Bravo à l’équipe de ViPhive Casino pour avoir créé un tel joyau dans l’industrie du jeu en ligne!
—————————————————————————————————————-
Bienvenue sur ViPhive Casino – Jouez aux Meilleurs Jeux de Casino en Ligne en France
Bonjour, je m’appelle Sophie et j’ai 32 ans. Je suis une joueuse passionnée de jeux de casino en ligne depuis plusieurs années. J’ai récemment essayé ViPhive Casino et je dois dire que j’ai été agréablement surprise. Le site est facile à naviguer, les jeux se chargent rapidement et les graphismes sont superbes.
J’ai particulièrement apprécié la sélection de jeux de table, avec une grande variété de blackjack, de roulette et de baccarat. Les croupiers en direct sont très professionnels et ajoutent une touche d’authenticité à l’expérience de jeu.
En outre, ViPhive Casino offre des bonus et des promotions généreux, ce qui est toujours appréciable. Le service clientèle est également excellent, avec une équipe réactive et serviable disponible 24h/24 et 7j/7.
Dans l’ensemble, je suis très satisfaite de mon expérience sur ViPhive Casino et je le recommande vivement à tous ceux qui cherchent un site de casino en ligne de qualité supérieure. Bravo à toute l’équipe de ViPhive Casino pour leur excellent travail!
Bienvenue sur ViPhive Casino - Jouez aux Meilleurs Jeux de Casino en Ligne en France

Bienvenue sur ViPhive Casino – Jouez aux Meilleurs Jeux de Casino en Ligne en France

Avez-vous des questions sur notre casino en ligne ? Consultez notre FAQ pour en savoir plus sur ViPhive Casino.

Qu’est-ce que ViPhive Casino ? ViPhive Casino est un casino en ligne proposant une large sélection de jeux de casino.

Pourquoi choisir ViPhive Casino ? Nous offrons une expérience de jeu en ligne de qualité supérieure et des gains élevés.

Comment puis-je commencer à jouer ? Inscrivez-vous dès maintenant et commencez à jouer à vos jeux de casino préférés en ligne.

Design and Develop by Ovatheme